<?php

namespace App\Http\Controllers\Admin;

use Alert; // 弹窗插件

use App\Http\Models\Admin;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Auth;

class BackController extends Controller
{
    //登录
    public function login(Request $request)
    {
        if($request->isMethod('POST')){
            // 表单的自动验证
            // 验证的方法存在三种 1. 使用控制器的 validate 方法 2. 使用验证类 3. 使用 Validator验证门面
            $this->validate($request, [
                'username' => 'required|min:2|max:10',
                'password' => 'required|min:4|max:10',
                'captcha' => 'required|captcha', //captcha这个规则不是laravel提供的，是mews/captcha类库给我们扩充
            ]); // 验证通过 下面的代码执行 否则调回上一页
            // 讲解 Auth的使用
            // Auth是laravel内置的一个做用户登录的模块，如果要使用的话，则需要现在做如下的定义 auth.php
            // 1. 定义验证的用户信息类 2. 验证成功后的用户的标识如何保存
            // 使用Auth门面来调用上面定义的信息来做登录验证
            $info = $request->only(['username', 'password']); // ['username'=> '庞淑华', 'password' => 'admin88'] 注意：密码字段必须叫做 password
            $remeberMe = $request->get('online');// 如果存在则显示 on 否则为 false 底层原理的 sh_admin表 remeberme_token字段里面做一个标识，代表要记住登录
            $rs = Auth::guard('backLogin')->attempt($info, $remeberMe); // attempt 接收两个参数 1. 代表是验证的用户名和密码 2. 代表的是否记住登录标识，以后免密码登录【记住，一般两周不用输入密码】
            if($rs){
//                $sessionInfo = Auth::guard('backLogin')->user();
//                dd($sessionInfo->username); // 登录之后，将用户的信息打印出来 注意：在Auth门面做登录后，会将用户的信息保存在session里面。 backLogin 配置用户登录后的标识保存在session里面 如何获取呢？
                Alert::success('登录成功！欢迎用户！', '标题'); // 原理 提示保存在一次性session
                return redirect('/admin/index');

            }else{
                // 失败
                Alert::error('登录失败', '标题');
                return back();
            }
        }

        return view('admin.back.login'); // 定义视图相关代码
    }

    public function logout()
    {
        // 退出，清除session数据
        Auth::guard('backLogin')->logout();// Auth门面提供的退出方法
        Alert::error('成功退出！', '标题');
        return redirect('/back/login');
    }
}
